﻿namespace HQS.TokenInterpolation.Tokens
{
    [Token(Name = "coalesce")]
    public class Coalesce : AbstractToken
    {
        [TokenProperty("this", true)]
        public string This { get; private set; }

        [TokenProperty("with", true)]
        public string With { get; private set; }

        [TokenProperty("with1", false)]
        public string With1 { get; private set; }

        [TokenProperty("with2", false)]
        public string With2 { get; private set; }

        [TokenProperty("with3", false)]
        public string With3 { get; private set; }

        protected override TokenRuntimeValue OnAccept(IDataSourcesVisitor dataSourcesVisitor)
        {
            return dataSourcesVisitor.Visit(this);
        }
    }
}